// pages/orderRecord/orderRecord.js
Page({
  // 页面数据模型
  data: {
    // 查询条件
    mobile: '', // 手机号
    startDate: '', // 开始时间
    endDate: '', // 结束时间
    overall: [],
    groupedOrders: [],
    statusIndex: 0, // 状态下拉框索引
    statusOptions: [{
        label: '全部',
        value: ''
      },
      {
        label: '已支付',
        value: 'paid'
      },
      {
        label: '待配送',
        value: 'completed'
      }, {
        label: '待收货',
        value: 'cancelled'
      }, {
        label: '已完成',
        value: 'complete'
      }

    ],

    // 订单列表相关
    orders: [], // 当前页订单数据
    loading: false, // 是否正在加载
    noMore: false, // 是否没有更多数据

    // 分页参数
    page: 1, // 当前页码
    pageSize: 10, // 每页数量

    // 用户权限相关
    isSuperManager: false, // 是否是超级管理员
    showAllOrdersTip: false // 是否显示“查看全院订单”提示
  },
  //处理手机号脱敏
  formatMobile(mobile) {
    if (!mobile || mobile.length !== 11) return '无效号码';
    return mobile.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');
  },
  // 页面加载时触发
  onLoad() {
    const app = getApp();
    const userInfo = app.globalData.userInfo || {};
    this.setData({
      userId: userInfo.wxUserId, // 用户ID
      isSuperManager: userInfo.isSuperManager === 1, // 是否是超级管理员
      showAllOrdersTip: userInfo.isSuperManager === 1 // 显示提示信息
    });

    // 计算日期：结束时间为今天，开始时间为今天前七天
    const today = new Date();
    const sevenDaysAgo = new Date(today.getTime() - 7 * 24 * 60 * 60 * 1000);

    // 格式化日期为 YYYY-MM-DD 格式
    const formatDate = (date) => {
      const year = date.getFullYear();
      const month = (date.getMonth() + 1).toString().padStart(2, '0');
      const day = date.getDate().toString().padStart(2, '0');
      return `${year}-${month}-${day}`;
    };

    const endDate = formatDate(today);
    const startDate = formatDate(sevenDaysAgo);

    this.setData({
      startDate,
      endDate
    });

    // 加载订单数据
    this.loadOrders();
    this.overall();
  },

  // 手机号输入事件
  onInputMobile(e) {
    this.setData({
      mobile: e.detail.value
    });
  },

  // 选择开始时间
  onChangeStartDate(e) {
    this.setData({
      startDate: e.detail.value
    });
  },

  // 选择结束时间
  onChangeEndDate(e) {
    this.setData({
      endDate: e.detail.value
    });
  },

  // 选择订单状态
  onChangeStatus(e) {
    this.setData({
      statusIndex: e.detail.value
    });
  },

  // 点击搜索按钮
  onSearch() {
    this.setData({
      page: 1, // 重置页码为第一页
      orders: [], // 清空已有订单
      noMore: false // 重置“没有更多”标志
    });
    this.loadOrders(); // 重新加载订单
    this.overall();
  },

  // 加载订单数据的方法
  loadOrders() {
    if (this.data.loading || this.data.noMore) return; // 防止重复加载或没有更多时继续请求

    this.setData({
      loading: true
    }); // 设置加载中状态

    // 获取状态值并转换为后端需要的数字状态
    const statusValue = this.data.statusOptions[this.data.statusIndex].value;
    let orderStatus = undefined;
    if (statusValue !== '') {
      const statusMap = {
        pending: 0,
        paid: 1,
        completed: 2,
        cancelled: 3
      };
      orderStatus = statusMap[statusValue];
      const params = {
        addOrderTimeBegin: this.data.startDate,
        addOrderTimeEnd: this.data.endDate,
        orderStatus: orderStatus,
        mobile: this.data.isSuperManager ? '' : this.data.mobile // 超级管理员不传手机号
      };
      // 发起请求
      wx.request({
        url: 'https://199shq.com/api/orders/list',
        method: 'POST',
        data: params,
        header: {
          'Content-Type': 'application/json',
          'token': wx.getStorageSync('token') // 从本地获取 token
        },
        success: (res) => {
          // 判断请求是否成功（HTTP状态码 + 业务状态码）
          if (res.statusCode !== 200 || res.data.state !== 20000) {
            wx.showToast({
              title: res.data.message || '请求失败',
              icon: 'none'
            });
            return;
          }

          // 提取订单数据
          const apiData = res.data.data;
          const dataList = apiData.dataList || [];

          // 处理并更新页面数据
          this.processOrderData(dataList);
        },
        fail: () => {
          wx.showToast({
            title: '网络异常，请重试',
            icon: 'none'
          });
        },
        complete: () => {
          this.setData({
            loading: false
          }); // 请求结束，关闭加载状态
        }
      });
    } else {
      // 构建请求参数
      const params = {
        addOrderTimeBegin: this.data.startDate,
        addOrderTimeEnd: this.data.endDate,
        orderStatus2: [1, 2, 3,4],
        mobile: this.data.isSuperManager ? '' : this.data.mobile // 超级管理员不传手机号
      };

      // 发起请求
      wx.request({
        url: 'https://199shq.com/api/orders/list',
        method: 'POST',
        data: params,
        header: {
          'Content-Type': 'application/json',
          'token': wx.getStorageSync('token') // 从本地获取 token
        },
        success: (res) => {
          // 判断请求是否成功（HTTP状态码 + 业务状态码）
          if (res.statusCode !== 200 || res.data.state !== 20000) {
            wx.showToast({
              title: res.data.message || '请求失败',
              icon: 'none'
            });
            return;
          }

          // 提取订单数据
          const apiData = res.data.data;
          const dataList = apiData.dataList || [];

          // 处理并更新页面数据
          this.processOrderData(dataList);
        },
        fail: () => {
          wx.showToast({
            title: '网络异常，请重试',
            icon: 'none'
          });
        },
        complete: () => {
          this.setData({
            loading: false
          }); // 请求结束，关闭加载状态
        }
      });
    }
  },
  overall() {
    const addOrderTimeBegin = this.data.startDate
    const addOrderTimeEnd = this.data.endDate
    wx.request({
      url: `https://199shq.com/api/orders/getTotalProduct?addOrderTimeBegin=${addOrderTimeBegin}&addOrderTimeEnd=${addOrderTimeEnd}`,
      method: 'GET',
      header: {
        'Content-Type': 'application/json',
        'token': wx.getStorageSync('token') // 从本地获取 token
      },
      success: (res) => {
        // 判断请求是否成功（HTTP状态码 + 业务状态码）
        if (res.statusCode !== 200 || res.data.state !== 20000) {
          wx.showToast({
            title: res.data.message || '请求失败',
            icon: 'none'
          });
          return;
        }
        console.log(res.data.data)
        this.setData({
          groupedOrders: res.data.data
        })
        // this.groupOrdersByDate()
      },
      fail: () => {
        wx.showToast({
          title: '网络异常，请重试',
          icon: 'none'
        });
      },
      complete: () => {
        this.setData({
          loading: false
        }); // 请求结束，关闭加载状态
      }
    });
  },
  // 处理订单数据的方法
  processOrderData(apiData) {
    if (!apiData || apiData.length === 0) {
      // 没有更多数据
      this.setData({
        noMore: true,
        orders: this.data.page === 1 ? [] : this.data.orders
      });
      return;
    }

    // 格式化订单数据，适配前端页面展示
    const formattedOrders = apiData.map(order => {
      let totalAmount = order.orderPrice || 0;
      if (typeof totalAmount === 'string') {
        totalAmount = parseFloat(totalAmount);
      }

      return {
        orderId: order.id, // 订单ID
        goodsName: order.goodsName, // 商品名称
        customerName: order.consignee, //用户姓名
        mobile: this.formatMobile(order.mobile), // 使用 formatMobile 处理手机号
        storeName: order.storeName, // 门店名称
        orderTime: order.addOrderTime, // 下单时间
        totalAmount: totalAmount.toFixed(2), // 总金额，保留两位小数
        status: order.orderStatus, // 订单状态（数字）
        statusLabel: this.getStatusLabel(order.orderStatus), // 状态标签（中文）
        goodsUrl: order.goodsUrl, // 商品图片
        ordersSpecName: order.ordersSpecName, // 规格名称
        shippingMethod: order.shippingMethod // 配送方式
      };
    });

    // 更新页面订单数据
    this.setData({
      orders: this.data.page === 1 ?
        formattedOrders : [...this.data.orders, ...formattedOrders],
      noMore: formattedOrders.length < this.data.pageSize
    });
  },

  // 根据订单状态数字获取中文标签
  getStatusLabel(status) {
    const statusMap = {
      1: 'paid',
      2: 'completed',
      3: 'cancelled',
      4:'complete'
    };

    const statusValue = statusMap[status] || status;
    const option = this.data.statusOptions.find(opt => opt.value === statusValue);
    return option ? option.label : `未知状态(${status})`;
  },

  // 滚动到底部，加载下一页
  onReachBottom() {
    if (!this.data.noMore) {
      this.setData({
        page: this.data.page + 1
      });
      this.loadOrders();
    }
  },

  // 点击订单查看详情
  viewDetail(e) {
    const orderId = e.currentTarget.dataset.id;
    console.log(e)
    wx.navigateTo({
      url: `pages/orderDetail/orderDetail?orderId=${orderId}`
    });
  },
});